home *** CD-ROM | disk | FTP | other *** search
/ Underwater Realms / Underwater Realms.iso / for_pc / pixsetup.bak < prev    next >
Text File  |  1994-05-30  |  30KB  |  944 lines

  1. '**************************************************************************
  2. '*                       MSSetup Toolkit PixFolio
  3. '**************************************************************************
  4. ''  Revised Pixfolio Setup Script
  5. ''   Feb 94: David H. Goeb
  6. ''   Apr 94: David H. Goeb
  7.  
  8. ''   Additions
  9. ''     Changed to have PCD files as part of application files
  10. ''     Added a WIN.INI check function to see if catalog was 
  11. ''      already installed, and also check if new version.
  12. ''      All Aztech Text files are also added to the program group
  13. ''      Further Enhancements are custom Install call and Multi
  14. ''      Catalog support
  15. ''     Additional bug fixes and addition of gems catalog
  16.  
  17. '' Additions For ATI DISC MAY 31
  18.  
  19. ''$DEFINE DEBUG  ''Define for script development/debugging
  20.  
  21. '$INCLUDE 'setupapi.inc'
  22. '$INCLUDE 'msdetect.inc'
  23. '$INCLUDE 'mscuistf.inc'
  24.  
  25. ''Dialog ID's
  26. CONST WELCOME       = 100
  27. CONST ASKQUIT       = 200
  28. CONST DESTPATH      = 300
  29. CONST EXITFAILURE   = 400
  30. CONST EXITQUIT      = 600
  31. CONST EXITSUCCESS   = 700
  32. CONST EXITREGISTERED= 750
  33. CONST OPTIONS       = 800
  34. CONST APPHELP       = 900
  35. CONST CUSTHELP      = 910
  36. CONST REGHELP       = 920
  37. CONST CUSTINST      = 6200
  38. CONST TOOBIG        = 6300
  39. CONST NOAVI         = 6350
  40. CONST NOAPP         = 6360
  41. CONST BADPATH       = 6400
  42. CONST CDGETNAMEORG  = 7500
  43. CONST MODELESS      = 5000
  44. CONST QUITWIN       = 6500
  45.  
  46. ''Bitmap ID
  47. CONST LOGO = 1
  48.  
  49. ''File Types
  50. CONST APPFILES     = 1
  51. CONST OPTFILES1    = 2
  52. CONST OPTFILES2    = 3
  53. CONST OPTFILES3    = 4
  54. CONST SYMFILES     = 5
  55. CONST CATFILES     = 6
  56. ''================================
  57. GLOBAL CATCOST%
  58.  
  59. GLOBAL CC$
  60.  
  61. GLOBAL DEST$        ''Default destination directory.
  62. GLOBAL WINDRIVE$    ''Windows drive letter.
  63. GLOBAL OPTCUR$      ''Option selection from option dialog.
  64. GLOBAL CUIDLL$      ''Custom user interface DLL
  65. GLOBAL szTempDir$   ''Working directory
  66. GLOBAL SysDir$      ''Windows System Directory
  67. GLOBAL ini$         ''INI file path
  68. GLOBAL astr$        ''Usefull little string
  69.  
  70. GLOBAL NOPT$     ''Option selection from OptFiles1 option dialog.
  71.  
  72. GLOBAL OPT1OPT$     ''?? Option selection from OptFiles1 option dialog.
  73. GLOBAL OPT2OPT$     ''?? Option selection from OptFiles2 option dialog.
  74. GLOBAL OPT3OPT$
  75. GLOBAL SYMOPT$      ''Option selection for symbol files.
  76.  
  77. ''CustInst list symbol names
  78. GLOBAL APPNEEDS$    ''Option list costs per drive
  79. GLOBAL OPT1NEEDS$
  80. GLOBAL OPT2NEEDS$
  81. GLOBAL OPT3NEEDS$   ''Multimedia files
  82. GLOBAL SYMNEEDS$
  83. GLOBAL EXTRACOSTS$  ''List of extra costs to add per drive
  84. GLOBAL BIGLIST$     ''List of option files cost calc results (boolean)
  85.  
  86. ''Dialog list symbol names
  87. GLOBAL CHECKSTATES$
  88. GLOBAL STATUSTEXT$
  89. GLOBAL DRIVETEXT$
  90.  
  91.  
  92. DECLARE SUB AddOptFilesToCopyList (ftype%)
  93. DECLARE SUB RecalcOptFiles (ftype%)
  94. DECLARE SUB RecalcPath
  95. DECLARE SUB SetDriveStatus
  96. DECLARE SUB Install
  97. DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  98.  
  99.  
  100. INIT:
  101.     CUIDLL$ = "mscuistf.dll"            ''Custom user interface dll
  102.     HELPPROC$ = "FHelpDlgProc"          ''Help dialog procedure
  103.  
  104.     SetBitmap CUIDLL$, LOGO
  105.     SetTitle "PixFolio Setup"
  106.     szTempDir$ = GetSymbolValue("STF_CWDDIR")
  107.     szInf$ = GetSymbolValue("STF_SRCINFPATH")
  108.     IF szInf$ = "" THEN
  109.        szInf$ = GetSymbolValue("STF_CWDDIR") + "PIXSETUP.INF"
  110.     END IF
  111.     ReadInfFile szInf$
  112.     '' Force Catalog to be include unless selected off
  113.  
  114.     NOPT$ = "1"
  115.  
  116.     WINDRIVE$ = MID$(GetWindowsDir, 1, 1)
  117. ''    DEST$ = WINDRIVE$ + ":\PIXFOLIO"
  118.     DEST$ = ".............................................................................................................................."
  119.     GetPixDir DEST$
  120.     if DEST$ = "" THEN
  121.         DEST$ = WINDRIVE$ + ":\PIXFOLIO"
  122.     END IF
  123.     ini$ = MakePath(GetWindowsDir, "WIN.INI")
  124.  
  125.     ''CustInst list symbols
  126.     CHECKSTATES$ = "CheckItemsState"
  127.     STATUSTEXT$  = "StatusItemsText"
  128.     DRIVETEXT$   = "DriveStatusText"
  129. '   FOR i% = 1 TO 3 STEP 1
  130.         AddListItem CHECKSTATES$, "ON"  '' Main program files
  131.         AddListItem CHECKSTATES$, "ON"  '' PCD files
  132.         AddListItem CHECKSTATES$, "OFF" '' VFW
  133.         AddListItem CHECKSTATES$, "ON" '' Multimedia
  134.         AddListItem CHECKSTATES$, "OFF" '' Symbols
  135. '    NEXT i%
  136.     FOR i% = 1 TO 5 STEP 1
  137.         AddListItem STATUSTEXT$, ""
  138.     NEXT i%
  139.     FOR i% = 1 TO 7 STEP 1
  140.         AddListItem DRIVETEXT$, ""
  141.     NEXT i%
  142.     ReplaceListItem DRIVETEXT$, 7, DEST$
  143.  
  144.     ''Disk cost list symbols
  145.     APPNEEDS$   = "AppNeeds"
  146.     OPT1NEEDS$  = "Opt1Needs"
  147.     OPT2NEEDS$  = "Opt2Needs"
  148.     OPT3NEEDS$  = "Opt3Needs"
  149.     SYMNEEDS$   = "SymNeeds"
  150.     EXTRACOSTS$ = "ExtraCosts"
  151.     BIGLIST$    = "BigList"
  152.     FOR i% = 1 TO 5 STEP 1
  153.         AddListItem BIGLIST$, ""
  154.     NEXT i%
  155.     FOR i% = 1 TO 26 STEP 1
  156.         AddListItem EXTRACOSTS$, "0"
  157.     NEXT i%
  158.  
  159.     ''File Option Variables
  160.     OPT1OPT$ = "1"
  161.     OPT2OPT$ = "1"
  162.     OPT3OPT$ = "1"
  163.     SYMOPT$  = "1"
  164.  
  165.     SysDir$ = GetWindowsSysDir()
  166.     RecalcPath
  167. ''    i% = DoMsgBox("RecalcPath OK", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  168.     SetDriveStatus
  169. ''    i% = DoMsgBox("SetDriveStatus OK", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  170.  
  171.  
  172.      OPTCUR$ = "1"
  173. '    DEST$ = "C:\PIXFOLIO"
  174.  
  175. '$IFDEF DEBUG
  176.     i% = SetSizeCheckMode(scmOnIgnore)    '' could use scmOff; def = scmOnFatal
  177.     WinDrive$ = MID$(GetWindowsDir, 1, 1)
  178.     IF IsDriveValid(WinDrive$) = 0 THEN
  179.     i% = DoMsgBox("Windows drive ('"+WinDrive$+"') is not a valid drive.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  180.     GOTO QUIT
  181.     END IF
  182. '$ENDIF ''DEBUG
  183.  
  184.  
  185. WELCOME:
  186.     sz$ = UIStartDlg(CUIDLL$, WELCOME, "FInfoDlgProc", APPHELP, HELPPROC$)
  187.     IF sz$ = "CONTINUE" THEN
  188.     UIPop 1
  189.     ELSE
  190.     GOSUB ASKQUIT
  191.     GOTO WELCOME
  192.     END IF
  193.  
  194.  
  195. OPTION:
  196.     SetSymbolValue "RadioDefault", OPTCUR$
  197. OPTL1:
  198.  
  199.     NOPT$ = "0"
  200.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  201.     OPTCUR$ = GetSymbolValue("ButtonChecked")
  202.  
  203. '$IFDEF DEBUG
  204.      i% = DoMsgBox("Result ('"+OPTCUR$+"') Was Returned.", "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  205. '$ENDIF ''DEBUG
  206.  
  207.     IF OPTCUR$ = "1" THEN
  208.       NOPT$ = "0"
  209.     ELSE
  210.       NOPT$ = "1"
  211.     END IF
  212.  
  213.     IF sz$ = "CONTINUE" THEN
  214.     UIPop(1)
  215.     ELSEIF sz$ = "REACTIVATE" THEN
  216.     GOTO OPTL1
  217.     ELSE
  218.     GOSUB ASKQUIT
  219.     GOTO OPTION
  220.     END IF
  221.  
  222.  
  223. CUSTINST:
  224.     SetDriveStatus
  225.     sz$ = UIStartDlg(CUIDLL$, CUSTINST, "FCustInstDlgProc", CUSTHELP, HELPPROC$)
  226.  
  227.     IF sz$ = "CONTINUE" THEN
  228.         ''Install only if it will fit.
  229.         FOR i% = 1 TO 5 STEP 1
  230.             IF GetListItem(BIGLIST$, i%) <> "" THEN
  231.                 GOSUB TOOBIG
  232.                 GOTO CUSTINST
  233.             END IF
  234.         NEXT i%
  235.         UIPop 1
  236.         GOTO INSTALLIT
  237.     ELSEIF sz$ = "PATH" THEN
  238.         GOTO GETPATH
  239.     ELSEIF sz$ = "CHK1" THEN
  240.         IF DoesFileExist(MakePath(DEST$, "PIXFOLIO.EXE"), femReadWrite) = 0 AND GetListItem(CHECKSTATES$, APPFILES) = "OFF" THEN
  241.             GOSUB NOAPP
  242.             GOTO CUSTINST
  243.         END IF
  244.         RecalcOptFiles APPFILES
  245.         RecalcOptFiles SYMFILES
  246.         SetDriveStatus
  247.         GOTO CUSTINST
  248.     ELSEIF sz$ = "CHK2" THEN
  249.         RecalcOptFiles OPTFILES1
  250.         RecalcOptFiles SYMFILES
  251.         SetDriveStatus
  252.         GOTO CUSTINST
  253.     ELSEIF sz$ = "CHK3" THEN
  254.         IF GetListItem(CHECKSTATES$, OPTFILES2) = "ON" THEN
  255.             IF CheckForAVI = 0 THEN
  256.                 GOSUB NOAVI
  257.                 ReplaceListItem CHECKSTATES$, OPTFILES2, "OFF"
  258.             END IF
  259.         END IF
  260.         RecalcOptFiles OPTFILES2
  261.         RecalcOptFiles SYMFILES
  262.         SetDriveStatus
  263.         GOTO CUSTINST
  264.     ELSEIF sz$ = "CHK4" THEN
  265.         RecalcOptFiles OPTFILES3
  266.         RecalcOptFiles SYMFILES
  267.         SetDriveStatus
  268.         GOTO CUSTINST
  269.     ELSEIF sz$ = "CHK5" THEN
  270.         RecalcOptFiles SYMFILES
  271.         SetDriveStatus
  272.         GOTO CUSTINST
  273.  
  274.     ELSEIF sz$ = "BTN2" THEN
  275.         GOTO OPTFILES1
  276.     ELSEIF sz$ = "BTN3" THEN
  277.         GOTO OPTFILES2
  278.     ELSEIF sz$ = "BTN4" THEN
  279.         GOTO OPTFILES3
  280.     ELSEIF sz$ = "BTN5" THEN
  281.         GOTO SYMFILES
  282.     ELSEIF sz$ = "REACTIVATE" THEN
  283.         RecalcPath
  284.         SetDriveStatus
  285.         GOTO CUSTINST
  286.     ELSE
  287.         GOTO OPTION
  288.         '' Allow to reverse back to change CD option
  289.         ''GOSUB ASKQUIT
  290.         ''GOTO CUSTINST
  291.     END IF
  292.  
  293.  
  294. GETPATH:
  295.     SetSymbolValue "EditTextIn", DEST$
  296.     SetSymbolValue "EditFocus", "END"
  297. GETPATHL1:
  298.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, HELPPROC$)
  299.  
  300.     IF sz$ = "CONTINUE" THEN
  301.         olddest$ = DEST$
  302.         DEST$ = GetSymbolValue("EditTextOut")
  303.  
  304.         ''Validate new path.
  305.         IF IsDirWritable(DEST$) = 0 THEN
  306.             GOSUB BADPATH
  307.             GOTO GETPATHL1
  308.         END IF
  309.         UIPop 1
  310.  
  311.         ''Truncate display if too long.
  312.         IF LEN(DEST$) > 23 THEN
  313.             ReplaceListItem DRIVETEXT$, 7, MID$(DEST$, 1, 23)+"..."
  314.         ELSE
  315.             ReplaceListItem DRIVETEXT$, 7, DEST$
  316.         END IF
  317.  
  318.         ''Recalc if path changed.
  319.         IF (olddest$ <> DEST$) AND (olddest$ <> DEST$+"\") AND (olddest$+"\" <> DEST$) THEN
  320.             RecalcPath
  321.             SetDriveStatus
  322.         END IF
  323.  
  324.         olddest$ = ""
  325.         GOTO CUSTINST
  326.     ELSEIF sz$ = "REACTIVATE" THEN
  327.         RecalcPath
  328.         SetDriveStatus
  329.         GOTO GETPATHL1
  330.     ELSEIF sz$ = "EXIT" THEN
  331.         GOSUB ASKQUIT
  332.         GOTO GETPATHL1
  333.     ELSE
  334.         UIPop 1
  335.         GOTO CUSTINST
  336.     END IF
  337.  
  338. INSTALLIT:
  339.     SetSymbolValue "SERIAL", "2X09AA001302"
  340.     SetSymbolValue "OWNER", "Aztech New Media Corp."
  341.     IF DoesFileExist(MakePath(DEST$, "PIXFOLIO.EXE"), femReadWrite) = 1 THEN
  342.         l& = GetStringTable(DEST$)
  343.         IF DoesFileExist(MakePath(DEST$, "PIXFOLIO.INI"), femReadWrite) = 1 THEN
  344.             ini$ = MakePath(DEST$, "PIXFOLIO.INI")
  345.         END IF
  346.     END IF
  347.     SERIAL$ = GetSymbolValue("SERIAL")
  348.     OWNER$  = GetSymbolValue("OWNER")
  349.     SERIAL1$ = GetIniKeyString(ini$, "PixFolio", "Registration Nbr")
  350.     OWNER1$ = GetIniKeyString(ini$, "PixFolio", "Registered To")
  351. '*    i% = DoMsgBox(SERIAL$+" "+SERIAL1, "Serial Number", MB_OK)
  352.  
  353.     IF ValidateReg(SERIAL1$) = 1 THEN
  354.         SERIAL$ = SERIAL1$
  355.         OWNER$ = OWNER1$
  356. '*        i% = DoMsgBox(SERIAL$+" "+SERIAL1, "Serial Number", MB_OK)
  357.     END IF
  358.     SetSymbolValue "SERIAL", SERIAL$
  359.     SetSymbolValue "OWNER", OWNER$
  360.  
  361.     Install
  362.  
  363.     IF(DoesFileExist(MakePath(DEST$, "PIXPCD.DLL"), femReadWrite) = 1 OR DoesFileExist(MakePath(DEST$, "PIXAVI.DLL"), femReadWrite) = 1) AND MID$(SERIAL$, 6, 1) <> "B" THEN
  364.         GOTO GETSERIAL
  365.     END IF
  366.  
  367.     IF ValidateReg(SERIAL$) = 1 THEN
  368.         GOTO UPDATEIT
  369.     END IF
  370.  
  371. GETSERIAL:
  372.  
  373.     sz$ = UIStartDlg(CUIDLL$, CDGETNAMEORG, "FNameOrgDlgProc", REGHELP, HELPPROC$)
  374.     DEST$ = GetSymbolValue("EditTextOut")
  375.  
  376.     IF sz$ = "CONTINUE" THEN
  377.         UIPop 1
  378.     ELSEIF sz$ = "CANCEL" THEN
  379.         UIPop 1
  380.     ELSE
  381.         GOSUB ASKQUIT
  382.         GOTO GETSERIAL
  383.     END IF
  384.  
  385.     SERIAL$ = GetSymbolValue("SERIAL")
  386.     OWNER$  = GetSymbolValue("OWNER")
  387.  
  388. UPDATEIT:
  389.     IF ValidateReg(SERIAL$) = 1 THEN
  390. '*        l& = PutStringTable(DEST$)
  391.         CreateIniKeyValue ini$, "PixFolio", "Registration Nbr", SERIAL$, cmoOverwrite
  392.         CreateIniKeyValue ini$, "PixFolio", "Registered To", OWNER$, cmoOverwrite
  393.     ELSE
  394.         CreateProgmanItem "PixFolio", "Register", "notepad.exe "+MakePath(DEST$,"PIXREGST.FRM"), "", cmoOverwrite
  395.     END IF
  396.  
  397. '*    Install
  398. QUITWIN:
  399.     ii% = RestartListEmpty()
  400.     IF ii% = 0 THEN
  401.         sz$ = UIStartDlg(CUIDLL$, QUITWIN, "FQuitWinDlgProc", 0, "")
  402.         IF sz$ = "CONTINUE" THEN
  403.             UIPop 1
  404.         ELSEIF sz$ = "REACTIVATE" THEN
  405.             GOTO QUITWIN
  406.         ELSE
  407.             GOSUB ASKQUIT
  408.             GOTO QUITWIN
  409.         END IF
  410.         ij% = ExitExecRestart()
  411.     END IF
  412.  
  413.  
  414. QUIT:
  415.     ON ERROR GOTO ERRQUIT
  416.  
  417.     IF ERR = 0 THEN
  418.         IF ValidateReg(SERIAL$) = 1 THEN
  419.             dlg% = EXITREGISTERED
  420.         ELSE
  421.             dlg% = EXITSUCCESS
  422.         END IF
  423.     ELSEIF ERR = STFQUIT THEN
  424.     dlg% = EXITQUIT
  425.     ELSE
  426.     dlg% = EXITFAILURE
  427.     END IF
  428. QUITL1:
  429.     sz$ = UIStartDlg(CUIDLL$, dlg%, "FInfo0DlgProc", 0, "")
  430.     IF sz$ = "REACTIVATE" THEN
  431.     GOTO QUITL1
  432.     END IF
  433.     UIPop 1
  434.  
  435.     END
  436.  
  437. ERRQUIT:
  438.     i% = DoMsgBox("Setup sources were corrupted, call (502) 955-7527!", "Setup Message", MB_OK+MB_TASKMODAL+MB_ICONHAND)
  439.     END
  440.  
  441. OPTFILES1:
  442.     SetSymbolValue "RadioDefault", OPT1OPT$
  443. OPT1L1:
  444.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  445.     newopt$ = GetSymbolValue("ButtonChecked")
  446.  
  447.     IF sz$ = "CONTINUE" THEN
  448.         UIPop 1
  449.         IF newopt$ <> OPT1OPT$ THEN
  450.             OPT1OPT$ = newopt$
  451.             RecalcOptFiles OPTFILES1
  452.             SetDriveStatus
  453.         END IF
  454.         newopt$ = ""
  455.         GOTO CUSTINST
  456.     ELSEIF sz$ = "REACTIVATE" THEN
  457.         RecalcPath
  458.         SetDriveStatus
  459.         GOTO OPT1L1
  460.     ELSEIF sz$ = "EXIT" THEN
  461.         GOSUB ASKQUIT
  462.         GOTO OPT1L1
  463.     ELSE
  464.         UIPop 1
  465.         newopt$ = ""
  466.         GOTO CUSTINST
  467.     END IF
  468.  
  469.  
  470.  
  471. OPTFILES2:
  472.     SetSymbolValue "RadioDefault", OPT2OPT$
  473. OPT2L1:
  474.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  475.     newopt$ = GetSymbolValue("ButtonChecked")
  476.  
  477.     IF sz$ = "CONTINUE" THEN
  478.         UIPop 1
  479.         IF newopt$ <> OPT2OPT$ THEN
  480.             OPT2OPT$ = newopt$
  481.             RecalcOptFiles OPTFILES2
  482.             SetDriveStatus
  483.         END IF
  484.         newopt$ = ""
  485.         GOTO CUSTINST
  486.     ELSEIF sz$ = "REACTIVATE" THEN
  487.         RecalcPath
  488.         SetDriveStatus
  489.         GOTO OPT2L1
  490.     ELSEIF sz$ = "EXIT" THEN
  491.         GOSUB ASKQUIT
  492.         GOTO OPT2L1
  493.     ELSE
  494.         UIPop 1
  495.         newopt$ = ""
  496.         GOTO CUSTINST
  497.     END IF
  498.  
  499. OPTFILES3:
  500.     SetSymbolValue "RadioDefault", OPT3OPT$
  501. OPT3L1:
  502.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  503.     newopt$ = GetSymbolValue("ButtonChecked")
  504.  
  505.     IF sz$ = "CONTINUE" THEN
  506.         UIPop 1
  507.         IF newopt$ <> OPT3OPT$ THEN
  508.             OPT3OPT$ = newopt$
  509.             RecalcOptFiles OPTFILES3
  510.             SetDriveStatus
  511.         END IF
  512.         newopt$ = ""
  513.         GOTO CUSTINST
  514.     ELSEIF sz$ = "REACTIVATE" THEN
  515.         RecalcPath
  516.         SetDriveStatus
  517.         GOTO OPT3L1
  518.     ELSEIF sz$ = "EXIT" THEN
  519.         GOSUB ASKQUIT
  520.         GOTO OPT3L1
  521.     ELSE
  522.         UIPop 1
  523.         newopt$ = ""
  524.         GOTO CUSTINST
  525.     END IF
  526.  
  527. SYMFILES:
  528.     SetSymbolValue "RadioDefault", SYMOPT$
  529. OPTSL1:
  530.     sz$ = UIStartDlg(CUIDLL$, OPTIONS, "FRadioDlgProc", APPHELP, HELPPROC$)
  531.     newopt$ = GetSymbolValue("ButtonChecked")
  532.  
  533.     IF sz$ = "CONTINUE" THEN
  534.         UIPop 1
  535.         IF newopt$ <> SYMOPT$ THEN
  536.             SYMOPT$ = newopt$
  537.             RecalcOptFiles SYMFILES
  538.             SetDriveStatus
  539.         END IF
  540.         newopt$ = ""
  541.         GOTO CUSTINST
  542.     ELSEIF sz$ = "REACTIVATE" THEN
  543.         RecalcPath
  544.         SetDriveStatus
  545.         GOTO OPTSL1
  546.     ELSEIF sz$ = "EXIT" THEN
  547.         GOSUB ASKQUIT
  548.         GOTO OPTSL1
  549.     ELSE
  550.         UIPop 1
  551.         newopt$ = ""
  552.         GOTO CUSTINST
  553.     END IF
  554.  
  555.  
  556. TOOBIG:
  557.     sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfo0DlgProc", 0, "")
  558.     IF sz$ = "REACTIVATE" THEN
  559.         RecalcPath
  560.         SetDriveStatus
  561.         GOTO TOOBIG
  562.     END IF
  563.     UIPop 1
  564.     RETURN
  565.  
  566. NOAVI:
  567.     sz$ = UIStartDlg(CUIDLL$, NOAVI, "FInfo0DlgProc", 0, "")
  568.     IF sz$ = "REACTIVATE" THEN
  569.         RecalcPath
  570.         SetDriveStatus
  571.         GOTO NOAVI
  572.     END IF
  573.     UIPop 1
  574.     RETURN
  575.  
  576. NOAPP:
  577.     sz$ = UIStartDlg(CUIDLL$, NOAPP, "FInfo0DlgProc", 0, "")
  578.     IF sz$ = "REACTIVATE" THEN
  579.         RecalcPath
  580.         SetDriveStatus
  581.         GOTO NOAPP
  582.     END IF
  583.     UIPop 1
  584.     RETURN
  585.  
  586.  
  587. BADPATH:
  588.     sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfo0DlgProc", 0, "")
  589.     IF sz$ = "REACTIVATE" THEN
  590.     GOTO BADPATH
  591.     END IF
  592.     UIPop 1
  593.     RETURN
  594.  
  595.  
  596. ASKQUIT:
  597.     sz$ = UIStartDlg(CUIDLL$, ASKQUIT, "FQuitDlgProc", 0, "")
  598.  
  599.     IF sz$ = "EXIT" THEN
  600.     UIPopAll
  601.     ERROR STFQUIT
  602.     ELSEIF sz$ = "REACTIVATE" THEN
  603.     GOTO ASKQUIT
  604.     ELSE
  605.     UIPop 1
  606.     END IF
  607.     RETURN
  608.  
  609.  
  610.  
  611. '**
  612. '** Purpose:
  613. '**     Builds the copy list and performs all installation operations.
  614. '** Arguments:
  615. '**     none.
  616. '** Returns:
  617. '**     none.
  618. '*************************************************************************
  619. SUB Install STATIC
  620.  
  621.       lTicks& = 20
  622.  
  623.       SrcDir$ = GetSymbolValue("STF_SRCDIR")
  624.       CreateDir DEST$, cmoNone
  625.       ClearBillboardList
  626.       AddToBillboardList CUIDLL$, MODELESS, "FModelessDlgProc", lTicks&
  627.  
  628.       OpenLogFile MakePath(DEST$, "LOGFILE.OUT"), 0
  629.       WriteToLogFile ""
  630.       WriteToLogFile "  User chose as destination directory: '" + DEST$ + "'"
  631.       WriteToLogFile "  User chose option: '" + OPTCUR$ + "'"
  632.       WriteToLogFile ""
  633.       WriteToLogFile "May have had to create the directory: " + DEST$
  634.       WriteToLogFile ""
  635.  
  636.       SetRestartDir(szTempDir)
  637.  
  638.       ClearCopyList
  639.       AddOptFilesToCopyList APPFILES
  640.       AddOptFilesToCopyList OPTFILES1
  641.       AddOptFilesToCopyList OPTFILES2
  642.       AddOptFilesToCopyList OPTFILES3
  643.       AddOptFilesToCopyList SYMFILES
  644.  
  645.  
  646.       AddSectionFilesToCopyList "Remove List", SrcDir$, DEST$
  647.  
  648.       IF NOPT$ = "0" THEN
  649.         cat1$ = MakePath(SrcDir$, "SMPL_"+MID$(SrcDir$,1,1)+".CAT")
  650.         cat2$ = MakePath(SrcDir$, "VR_I_E.CAT")
  651.         cat3$ = MakePath(SrcDir$, "WB_1TO3.CAT")
  652.         cat4$ = MakePath(SrcDir$, "WB_4to6.CAT")
  653.         cat5$ = MakePath(SrcDir$, "DINO_I.CAT")
  654.         cat6$ = MakePath(SrcDir$, "FAL_I_D.CAT")
  655.         cat7$ = MakePath(SrcDir$, "GEM_I_D.CAT")
  656.         cat8$ = MakePath(SrcDir$, "AGB_I_E.CAT")
  657.        ELSE
  658.         AddSectionFilesToCopyList "Catalogs", SrcDir$, DEST$
  659.         AddSectionFilesToCopyList "Sampler_"+MID$(SrcDir$,1,1), SrcDir$, DEST$
  660.         cat1$ = MakePath(DEST$, "SMPL_"+MID$(SrcDir$,1,1)+".CAT")
  661.         cat2$ = MakePath(DEST$, "VR_I_E.CAT")
  662.         cat3$ = MakePath(DEST$, "WB_1TO3.CAT")
  663.         cat4$ = MakePath(DEST$, "WB_4to6.CAT")
  664.         cat5$ = MakePath(DEST$, "DINO_I.CAT")
  665.         cat6$ = MakePath(DEST$, "FAL_I_D.CAT")
  666.         cat7$ = MakePath(DEST$, "GEM_I_D.CAT")
  667.         cat8$ = MakePath(DEST$, "AGB_I_E.CAT")
  668.       END IF
  669.  
  670.       CopyFilesInCopyList
  671.  
  672.       vol$ = "              "
  673.       GetVolume SrcDir$, vol$
  674.       Ext$ = "*.GIF;*.BMP;*.TIF;*.TGA;*.IFF;*.PCX;*.WMF;*.EPS;*.WPG;*.PCD"
  675.       i% = DoesFileExist(cat$, femExists)
  676.       j% = DoesIniSectionExist("WIN.INI", "PixFolio")
  677.       IF i = 1 And j = 0 THEN
  678.         '' CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog1", "Default," + cat$ + "," + Ext$ +"," + vol$ + ",READONLY", cmoNone
  679.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog99", "Fashion Advertising Lifestyle," + cat6$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  680.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog98", "Visual Rythms," + cat2$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  681.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog97", "WorldBank Volumes I to III," + cat3$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  682.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog96", "WorldBank Volumes IV to VI," + cat4$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  683.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog95", "Jurassic Dinosaurs," + cat5$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  684.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog94", "Sample Images from WorldBank," + cat1$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  685.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog93", "Gems," + cat7$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  686.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog92", "Abstract & Graphic Backgrounds," + cat8$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  687.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalogs", "99", cmoNone
  688.     ELSE
  689.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog99", "Fashion Advertising Lifestyle," + cat6$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  690.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog98", "Visual Rythms," + cat2$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  691.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog97", "WorldBank Volumes I to III," + cat3$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  692.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog96", "WorldBank Volumes IV to VI," + cat4$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  693.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog95", "Jurassic Dinosaurs," + cat5$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  694.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog94", "Sample Images from WorldBank," + cat1$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  695.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog93", "Gems," + cat7$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  696.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalog92", "Abstract & Graphic Backgrounds," + cat8$ + "," + Ext$ + ", , READONLY", cmoOverwrite
  697.         CreateIniKeyValue "WIN.INI", "PixFolio", "Catalogs", "99", cmoNone
  698.     ENDIF
  699.  
  700.     IF DoesFileExist(MakePath(DEST$, "PIXPCD.DLL"), femReadWrite) = 1 THEN
  701.         CreateIniKeyValue "WIN.INI", "PixFolio", "PCD Resolution", "3", cmoNone
  702.         CreateIniKeyValue "WIN.INI", "PixFolio", "PCD Format", "2", cmoNone
  703.     END IF
  704.  
  705.     CreateProgmanGroup "PixFolio", "", cmoNone
  706.     ShowProgmanGroup  "PixFolio", 1, cmoNone
  707.     CreateProgmanItem "PixFolio", "PixFolio", MakePath(DEST$,"PixFolio"), "", cmoOverwrite
  708.     CreateProgmanItem "PixFolio", "Read Me", "NotePad.exe "+MakePath(DEST$,"PIXREAD.ME"), "", cmoOverwrite
  709.     CreateProgmanItem "PixFolio", "User Guide", "Write.exe "+MakePath(DEST$,"UsrGuide.wri"), "", cmoOverwrite
  710.     CreateProgmanItem "PixFolio", "License Agreement", "Notepad.exe "+MakePath(DEST$,"LICENSE.TXT"), "", cmoOverwrite
  711.     CreateProgmanItem "PixFolio", "Other Products", "NotePad.exe "+MakePath(DEST$,"OTH_PROD.TXT"), "", cmoOverwrite
  712.  
  713.     CreateProgmanGroup "Multi Media Applications", "", cmoNone
  714.     ShowProgmanGroup   "Multi Media Applications", 1, cmoNone
  715.     CreateProgmanItem  "Multi Media Applications", "Bob's CD Player", ""+MID$(SrcDir$,1,1)+":\WIN_APPS\bcdp20\bcdp.exe", "", cmoOverwrite
  716.     CreateProgmanItem  "Multi Media Applications", "CakeWalk Midi Demo Install", ""+MID$(SrcDir$,1,1)+":\WIN_APPS\cakewalk\Setup.exe", "", cmoOverwrite
  717.     CreateProgmanItem  "Multi Media Applications", "CD Wizzard", ""+MID$(SrcDir$,1,1)+":\WIN_APPS\cdw200\cdw.exe", "", cmoOverwrite
  718.     CreateProgmanItem  "Multi Media Applications", "Midi Drums", ""+MID$(SrcDir$,1,1)+":\WIN_APPS\drum\drum.exe", "", cmoOverwrite
  719.     CreateProgmanItem  "Multi Media Applications", "Guitar", ""+MID$(SrcDir$,1,1)+":\WIN_APPS\guitar\guitar.exe", "", cmoOverwrite
  720.     CreateProgmanItem  "Multi Media Applications", "Improvise", ""+MID$(SrcDir$,1,1)+":\WIN_APPS\imp120\improvis.exe", "", cmoOverwrite
  721.     CreateProgmanItem  "Multi Media Applications", "MOD 4 WIN", ""+MID$(SrcDir$,1,1)+":\WIN_APPS\mod4win\install.exe", "", cmoOverwrite
  722.     CreateProgmanItem  "Multi Media Applications", "MPEG Player", ""+MID$(SrcDir$,1,1)+":\WIN_APPS\mpeg\mplay.exe", "", cmoOverwrite
  723.     CreateProgmanItem  "Multi Media Applications", "Noise Master", ""+MID$(SrcDir$,1,1)+":\WIN_APPS\nm201\nm201.exe", "", cmoOverwrite
  724.     CreateProgmanItem  "Multi Media Applications", "Piano", ""+MID$(SrcDir$,1,1)+":\WIN_APPS\piano\piano.exe", "", cmoOverwrite
  725.     CreateProgmanItem  "Multi Media Applications", "Sights & Sounds", ""+MID$(SrcDir$,1,1)+":\WIN_APPS\ssvwr400\ssvwr400.exe", "", cmoOverwrite
  726.     CreateProgmanItem  "Multi Media Applications", "Staffs", ""+MID$(SrcDir$,1,1)+":\WIN_APPS\STAFFS\STAFF20.EXE", "", cmoOverwrite
  727.     CreateProgmanItem  "Multi Media Applications", "Surf Wave Editor", ""+MID$(SrcDir$,1,1)+":\WIN_APPS\surf\surf.exe", "", cmoOverwrite
  728.     CreateProgmanItem  "Multi Media Applications", "ToWave, a Sound Utility", ""+MID$(SrcDir$,1,1)+":\WIN_APPS\TOWAV\TOWAVE.EXE", "", cmoOverwrite
  729.     CreateProgmanItem  "Multi Media Applications", "UltiMod MOD player", ""+MID$(SrcDir$,1,1)+":\WIN_APPS\ultimo\ultimod.exe", "", cmoOverwrite
  730.     CreateProgmanItem  "Multi Media Applications", "Voice Blaster", ""+MID$(SrcDir$,1,1)+":\WIN_APPS\voicbl24\vbjr.exe", "", cmoOverwrite
  731.     CreateProgmanItem  "Multi Media Applications", "WinJammer Midi Editor", ""+MID$(SrcDir$,1,1)+":\WIN_APPS\WINJAMMR\winjammr.exe", "", cmoOverwrite
  732.     CreateProgmanItem  "Multi Media Applications", "Windows JPEG viewer", ""+MID$(SrcDir$,1,1)+":\WIN_APPS\winjpeg\winjpeg.exe", "", cmoOverwrite
  733.     CreateProgmanItem  "Multi Media Applications", "Windows MOD Player", ""+MID$(SrcDir$,1,1)+":\WIN_APPS\winmod\wmp.exe", "", cmoOverwrite
  734.     CreateProgmanItem  "Multi Media Applications", "WinTab Wave Creator", ""+MID$(SrcDir$,1,1)+":\WIN_APPS\wintab2\wntab2.exe", "", cmoOverwrite
  735.     CloseLogFile
  736.  
  737. END SUB
  738.  
  739.  
  740.  
  741. '**
  742. '** Purpose:
  743. '**     Appends a file name to the end of a directory path,
  744. '**     inserting a backslash character as needed.
  745. '** Arguments:
  746. '**     szDir$  - full directory path (with optional ending "\")
  747. '**     szFile$ - filename to append to directory
  748. '** Returns:
  749. '**     Resulting fully qualified path name.
  750. '*************************************************************************
  751. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  752.     IF szDir$ = "" THEN
  753.     MakePath = szFile$
  754.     ELSEIF szFile$ = "" THEN
  755.     MakePath = szDir$
  756.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  757.     MakePath = szDir$ + szFile$
  758.     ELSE
  759.     MakePath = szDir$ + "\" + szFile$
  760.     END IF
  761. END FUNCTION
  762.  
  763. '**
  764. '** Purpose:
  765. '**     Adds the specified option files to the copy list.
  766. '** Arguments:
  767. '**     ftype%  - type of files to add, one of the following:
  768. '**             APPFILES, OPTFILES1, OPTFILES2
  769. '** Returns:
  770. '**     none.
  771. '*************************************************************************
  772. SUB AddOptFilesToCopyList (ftype%) STATIC
  773.  
  774.     IF GetListItem(CHECKSTATES$, ftype%) = "ON" THEN
  775.         SrcDir$ = GetSymbolValue("STF_SRCDIR")
  776.         IF ftype% = APPFILES THEN
  777.             AddSectionFilesToCopyList "PixFolio Files", SrcDir$, DEST$
  778.             AddSectionFilesToCopyList "System Files", SrcDir$, SysDir$
  779.         ELSEIF ftype% = OPTFILES1 THEN
  780.                         '' Not any more
  781.             AddSectionFilesToCopyList "PCD Files", SrcDir$, DEST$
  782.         ELSEIF ftype% = OPTFILES2 THEN
  783.             AddSectionFilesToCopyList "VFW Files", SrcDir$, DEST$
  784.         ELSEIF ftype% = OPTFILES3 THEN
  785.             AddSectionFilesToCopyList "Multimedia Files", SrcDir$, DEST$
  786.         ELSEIF ftype% = SYMFILES THEN
  787. ''            i% = DoMsgBox("AddOptFiles" + STR$(ftype%), "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  788.             IF GetListItem(CHECKSTATES$, APPFILES) = "ON" THEN
  789.                 AddSectionFilesToCopyList "PixFolio Symbols", SrcDir$, DEST$
  790.             END IF
  791.             IF GetListItem(CHECKSTATES$, OPTFILES1) = "ON" THEN
  792.                 AddSectionFilesToCopyList "PCD Symbols", SrcDir$, DEST$
  793.             END IF
  794.             IF GetListItem(CHECKSTATES$, OPTFILES2) = "ON" THEN
  795.                 AddSectionFilesToCopyList "VFW Symbols", SrcDir$, DEST$
  796.             END IF
  797.             IF GetListItem(CHECKSTATES$, OPTFILES3) = "ON" THEN
  798.                 AddSectionFilesToCopyList "Multimedia Symbols", SrcDir$, DEST$
  799.             END IF
  800.         END IF
  801.         SrcDir$ = ""
  802.     END IF
  803. END SUB
  804.  
  805. '**
  806. '** Purpose:
  807. '**     Recalculates disk space for the given option files and sets
  808. '**     the status info symbol "StatusItemsText".
  809. '** Arguments:
  810. '**     ftype% - type of files to add, one of the following:
  811. '**             APPFILES, OPTFILES1, OPTFILES2
  812. '** Returns:
  813. '**     none.
  814. '*************************************************************************
  815. SUB RecalcOptFiles (ftype%) STATIC
  816.     CursorSave% = ShowWaitCursor()
  817.     ClearCopyList
  818.     AddOptFilesToCopyList ftype%
  819. ''    i% = DoMsgBox("Added files to copy list " + STR$(ftype%), "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  820.     fExtra% = 0
  821.     IF ftype% = APPFILES THEN
  822.         ListSym$ = APPNEEDS$
  823.         IF GetListItem(CHECKSTATES$, APPFILES) = "ON" THEN
  824.             ''Add extra cost to Windows drive for ini/progman, etc.
  825.             ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  826.             ReplaceListItem EXTRACOSTS$, ndrive%, "10240"
  827.             fExtra% = 1
  828.         END IF
  829.     ELSEIF ftype% = OPTFILES1 THEN
  830.         ListSym$ = OPT1NEEDS$
  831.     ELSEIF ftype% = OPTFILES2 THEN
  832.         ListSym$ = OPT2NEEDS$
  833.     ELSEIF ftype% = OPTFILES3 THEN
  834.         ListSym$ = OPT3NEEDS$
  835.     ELSEIF ftype% = SYMFILES THEN
  836.         ListSym$ = SYMNEEDS$
  837.     END IF
  838. ''    i% = DoMsgBox("ListSym$ =" + ListSym$, "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  839.     StillNeed& = GetCopyListCost(EXTRACOSTS$, ListSym$, "")
  840.  
  841.     cost& = 0
  842.  
  843.     FOR i% = 1 TO 26 STEP 1
  844.         cost&  = cost& + VAL(GetListItem(ListSym$, i%))
  845.     NEXT i%
  846.     IF NOPT$ = "1" THEN
  847.         ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K (Including Catalog)"
  848.     ELSE
  849.         ReplaceListItem STATUSTEXT$, ftype%, STR$(cost& / 1024) + " K"
  850.     END IF
  851.  
  852.  
  853.     IF StillNeed& > 0 THEN
  854.         ReplaceListItem BIGLIST$, ftype%, "YES"
  855.     ELSE
  856.         ReplaceListItem BIGLIST$, ftype%, ""
  857.     END IF
  858.  
  859.     IF fExtra% THEN
  860.         ReplaceListItem EXTRACOSTS$, ndrive%, "0"
  861.     END IF
  862.     RestoreCursor CursorSave%
  863.     ListSym$ = ""
  864. ''    i% = DoMsgBox("RecalcPath OK" + STR$(ftype%), "DEBUG", MB_TASKMODAL+MB_ICONHAND+MB_OK)
  865. END SUB
  866.  
  867.  
  868. '**
  869. '** Purpose:
  870. '**     Recalculates disk space and sets option status info according
  871. '**     to the current destination path.
  872. '** Arguments:
  873. '**     none.
  874. '** Returns:
  875. '**     none.
  876. '*************************************************************************
  877. SUB RecalcPath STATIC
  878.  
  879.     CursorSave% = ShowWaitCursor()
  880.  
  881.     RecalcOptFiles APPFILES
  882.     RecalcOptFiles OPTFILES1
  883.     RecalcOptFiles OPTFILES2
  884.     RecalcOptFiles OPTFILES3
  885.     RecalcOptFiles SYMFILES
  886.  
  887.     RestoreCursor CursorSave%
  888. END SUB
  889.  
  890.  
  891. '**
  892. '** Purpose:
  893. '**     Sets drive status info according to latest disk space calcs.
  894. '** Arguments:
  895. '**     none.
  896. '** Returns:
  897. '**     none.
  898. '*************************************************************************
  899. SUB SetDriveStatus STATIC
  900.  
  901.     drive$ = MID$(DEST$, 1, 1)
  902.     ndrive% = ASC(ucase$(drive$)) - ASC("A") + 1
  903.     cost& = VAL(GetListItem(APPNEEDS$, ndrive%)) + VAL(GetListItem(OPT1NEEDS$, ndrive%)) + VAL(GetListItem(OPT2NEEDS$, ndrive%)) + VAL(GetListItem(SYMNEEDS$, ndrive%))
  904.     free& = GetFreeSpaceForDrive(drive$)
  905.  
  906. ''======================================================================
  907. '' Manual posting of catalog size for now until new version is made.
  908. ''======================================================================
  909. '' If catalog on HD is selected add 41472626 to total needed.        
  910.  
  911.     IF NOPT$ = "1" THEN
  912.       cost& = cost& + 42284334
  913.     END IF
  914.  
  915. ''=====================================================================
  916.     
  917.     ReplaceListItem DRIVETEXT$, 1, drive$ + ":"
  918.     ReplaceListItem DRIVETEXT$, 2, STR$(cost& / 1024) + " K"
  919.     ReplaceListItem DRIVETEXT$, 3, STR$(free& / 1024) + " K"
  920.  
  921.     IF drive$ = WINDRIVE$ THEN
  922.         ReplaceListItem DRIVETEXT$, 4, ""
  923.         ReplaceListItem DRIVETEXT$, 5, ""
  924.         ReplaceListItem DRIVETEXT$, 6, ""
  925.     ELSE
  926.         ndrive% = ASC(ucase$(WINDRIVE$)) - ASC("A") + 1
  927.         cost& = VAL(GetListItem(APPNEEDS$, ndrive%)) + VAL(GetListItem(OPT1NEEDS$, ndrive%)) + VAL(GetListItem(OPT2NEEDS$, ndrive%))
  928.         IF cost& = 0 THEN
  929.             ReplaceListItem DRIVETEXT$, 4, ""
  930.             ReplaceListItem DRIVETEXT$, 5, ""
  931.             ReplaceListItem DRIVETEXT$, 6, ""
  932.         ELSE
  933.             ''IF NOPT$ = "1" THEN
  934.             ''  cost& = cost& + 1146712
  935.             ''END IF
  936.             free& = GetFreeSpaceForDrive(WINDRIVE$)
  937.             ReplaceListItem DRIVETEXT$, 4, WINDRIVE$ + ":"
  938.             ReplaceListItem DRIVETEXT$, 5, STR$(cost& / 1024) + " K"
  939.             ReplaceListItem DRIVETEXT$, 6, STR$(free& / 1024) + " K"
  940.         END IF
  941.     END IF
  942. END SUB
  943.  
  944.